import { applyDecorators, SetMetadata, UseGuards } from '@nestjs/common';
import { AuthGuard } from '@nestjs/passport';
import { Role } from '../enum';
import { RoleGuard } from '../guards/role.guard';

export function Auth(...roles: Role[]) {
  // 将这个接收到的roles存储起来 SetMetadata 相当于临时的变量存储空间
  // auth/guards/role.guard.ts 守卫文件中可以获取到 在进行处理

  // 这里相当于使用了两层守卫 Auth身份验证 Role角色验证 没登录(401) 没权限(403)
  return applyDecorators(SetMetadata('roles', roles), UseGuards(AuthGuard('jwt'), RoleGuard));
}
